package net.lzzy.practices.services;

import net.lzzy.practices.entities.Applicant;
import net.lzzy.practices.entities.Course;

import java.util.List;
import java.util.UUID;

/**
 * @author liaodcc on 2022/5/25 15:08.
 * * 以下学生用户的接口方法
 * apply方法，学生用户申请注册某一课程
 * getAllCourses方法获取学生的所有状态的课程，包括申请中的、通过的和已拒绝的
 * getEnrolledCourses方法获取已注册并审批通过的课程
 * getApplyingCourses方法获取申请注册中的课程
 * getDeclinedCourses方法获取已被教师拒绝的课程
 * * 教师用户的接口方法
 * approve方法，教师用户审批通过某一学生对该门课程的注册申请
 * decline方法，教师用户驳回某一学生对该门课程的注册申请
 * getEnrolledStudents方法获取该门课程所有正式学生
 * getApplyingStudents方法获取正在申请注册该门课程的学生
 * getDeclinedStudents方法获取已驳回的学生列表
 * removeStudent方法从课程中移除已注册的学生
 */
public interface ApplicantService {
    Applicant apply(UUID studentId,UUID courseId,String token);
    List<Applicant> getEnrolledApplicants(UUID studentId);
    List<Applicant> getApplyingApplicants(UUID studentId);
    List<Applicant> getDeclinedApplicants(UUID studentId);

    Applicant approve(UUID applicantId,String token);
    Applicant decline(UUID applicantId,String token);
    List<Applicant> getEnrolledStudents(UUID courseId);
    List<Applicant> getApplyingStudents(UUID courseId);
    List<Applicant> getDeclinedStudents(UUID courseId);
    Course removeStudent(UUID courseId,UUID studentId,String token);
}
